Remote storage and computing services allow users to store data on remote computer servers and access them from multiple devices through a network, usually the Internet. In addition, some service providers allow users to access different applications in order to generate and manipulate documents. For instance, the users can download applications such as text editors, spreadsheet generators, presentation programs, etc., from the servers and access them in the browser.
Many of these applications are used to enter and manipulate text. A desired feature for any application that manipulates text is the ability to flag words that are not spelled correctly and to provide appropriate correction suggestions. Most spell checkers include a verification component and a suggestion component. The verification component utilizes one or more dictionaries or lists of words that are valid in each language. Each word in a document is compared against the entries for the appropriate language to identify possible misspellings. The suggestion component utilizes different algorithms and heuristics to identify what the user had intended to type and to provide correction suggestions.
The use of remote storage and computing services as well the use of smaller mobile devices with less computing resources provide several challenges for spell checker applications. On one hand the application has to be small for fast download through the Internet and fast execution on mobile devise with fewer computing resources. On the other hand, the application has to be able to identify misspelled errors as a user types the words and to quickly provide correction suggestions when the user asks for suggestions. Also, applications delivered in languages that are universally acceptable by different browsers (e.g., delivered in JavaScript), are generally less efficient then the native applications and require fast techniques in order to provide acceptable response time.
In a remote computing system, one possible solution is to send each word to the server and allow the more powerful resources of the server to do spell checking. The drawback for this option is the additional network traffic between the remote device and the server. In addition, sending the words to server for spell checking results in spell checking to become unavailable when the application is being used in offline mode.
Another possible solution for browser-based applications is to use the spell checking features of the browser. The drawback for this option is that different browsers have different spell checkers and accessing the same application through different browsers provides a non-uniform experience for the user.